#include "rc.h"
#include "common/log/log.h"
#include "util/date.h"

bool is_leap_year(int year) {
    return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}

int is_date(int year, int mon, int day) {
    int Maxdays[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    if (mon < 1 || mon > 12) {
        // 无效月
        return -1;
    }
    if (year < 1970) {
        // 无效年（年的有效性不好界定，就认为小于0为无效）
        return -1;
    }
    if (mon == 2 && day == 29 && is_leap_year(year)) {
        //闰年2月29日
        return 1;
    }
    if (day<1 || day>Maxdays[mon]) {
        // 无效日
        return -1;
    }
    return 1; //日期有效，返回真
}

int is_valid_date(int date) {
    int year = date / 10000;
    int month = (date - year * 10000) / 100;
    int day = date - year * 10000 - month * 100;
    return is_date(year, month, day);
}


 int str_to_date(const char *str){
    int yy,mm,dd;
    int ret=sscanf(str,"%d-%d-%d",&yy,&mm,&dd);
    if(3!=ret)
    {
        return -2;
    }
    int dv=yy*10000+mm*100+dd;
    return is_valid_date(dv);
 }